#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "RS485thread.h"
#include "RS485thread1.h"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    View_init();
    progressInit();
    //软件名称
    setWindowTitle("轮胎吊接收端控制系统_V1.0");

    refreshTimer = startTimer(100, Qt::CoarseTimer);
    sampleTimer = startTimer(50, Qt::CoarseTimer);

    client=new Client(this);
    client->Toconnect("192.168.1.101",8800);//连接服务器的公网IP地址+本地端口号"192.168.1.101",8899
    //TCP连接成功信号
    connect(client,&Client::sig_connect_suc,this,[=]()
    {
        createIndicatorLabel(ui->label,3,70,"WiFi",1);
    });
    //TCP关闭成功信号
    connect(client,&Client::sig_tcp_cloSuc,this,[=]()
    {
        createIndicatorLabel(ui->label,5,70,"WiFi",1);
    });

    QStringList strList3;
    strList3<<"恒压"<<"恒流"<<"恒功率"<<"恒占空比";
    ui->comboBox->addItems(strList3);

/************************************************ CAN线程 ********************************************************************************/
    thread2 = new QThread;
    can = new canThread;
    can->moveToThread(thread2);
    thread2->start();
    //信号槽释放资源
    connect(this,&MainWindow::destroyed,this,[=](){
        //释放创建的子线程对象
        thread2->wait();
        thread2->quit();
        thread2->deleteLater();
        //释放创建的任务对象
        can->deleteLater();
    });
    connect(this,&MainWindow::SIGtocancon,can,&canThread::openCan);  //点击启动CAN按钮打开CAN
    connect(this,&MainWindow::SIGtocansto,can,&canThread::stopCan);  //点击启动CAN按钮关闭CAN
    connect(this,&MainWindow::SIGtocansen,can,&canThread::sendData); //点击发送按钮，将框内ID和Data数据送到CAN发送函数
    connect(can,&canThread::TCPSendCANData,client,&Client::sendcan_data);//CAN数据发送到TCP线程等待发送
    connect(can,&canThread::SIGCanOpen,this,&MainWindow::CANConnect);
    connect(client,&Client::CANCon,can,&canThread::sendData);//远程控制指令CAN发送
    connect(can,&canThread::Recdata1_1,this,&MainWindow::DCDC1Sstate1);
    connect(can,&canThread::Recdata1_2,this,&MainWindow::DCDC1Sstate2);

/************************************************ 倍加福RS485线程 ********************************************************************************/
    //添加SOC串口号
    QList<QSerialPortInfo> list  = QSerialPortInfo::availablePorts();
    foreach (const QSerialPortInfo & info, list) {
        if(info.portName() == "COM8"){
            on_openRS4851_clicked(); //485打开
        }
    }
    connect(&m_timer,&QTimer::timeout,[=]{
        RS485Thread *rs485tem = new RS485Thread(this, &SerialPort);//启动线程，在线程内通讯
        rs485tem->start();
        connect(rs485tem,&RS485Thread::testString,this,&MainWindow::RS485BGFData);
        connect(rs485tem,&RS485Thread::testString,client,&Client::RS485dataRec);
        rs485tem->wait();
        rs485tem->quit();
        rs485tem->deleteLater();
    });
    m_timer.interval();
    connect(&tem_timer,&QTimer::timeout,[=]{
        //发送获取电压与电流数据的命令
        readXYSpeed();//电压电流命令
    });

/************************************************ 光纤温度模块RS485线程 ********************************************************************************/
    //添加SOC串口号
    QList<QSerialPortInfo> list1  = QSerialPortInfo::availablePorts();
    foreach (const QSerialPortInfo & info, list) {
        if(info.portName() == "COM9"){
            on_openRS4852_clicked(); //485打开
        }
    }
    connect(&m_timer2,&QTimer::timeout,[=]{
        RS485Thread1 *rs485tem1 = new RS485Thread1(this, &SerialPort2);//启动线程，在线程内通讯
        rs485tem1->start();
        connect(rs485tem1,&::RS485Thread1::testString1,this,&MainWindow::RS485Data);
        //connect(rs485tem1,&::RS485Thread1::testString1,ui->textBrowser,&QTextEdit::append);
        connect(rs485tem1,&::RS485Thread1::TCPSendS,client,&Client::RS485dataTem);
        rs485tem1->wait();
        rs485tem1->quit();
        rs485tem1->deleteLater();
    });
    m_timer2.interval();
    connect(&tem_timer2,&QTimer::timeout,[=]{
        //发送获取电压与电流数据的命令
        readTemperature();//温度访问指令
    });

    on_comboBox_activated(0);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::timerEvent(QTimerEvent *event)
{
    Q_UNUSED(event);
    if(event->timerId() == sampleTimer) //30ms
    {
        ui->DCDC1IN_V->setValue(DC1_inV);
        ui->DCDC1IN_A->setValue(DC1_inA);
        ui->DCDC1OUT_V->setValue(DC1_putV);
        ui->DCDC1OUT_A->setValue(DC1_putA);
        ui->ZLQ1IN_V->setValue(ZLQ1_inV);
        ui->ZLQ1IN_A->setValue(ZLQ1_inA);
        ui->DCDC1IN_V->setFormat(QString("DCDC输入电压 : %1 V").arg(QString::number(DC1_inV)));
        ui->DCDC1IN_A->setFormat(QString("DCDC输入电流 : %1 A").arg(QString::number(DC1_inA)));
        ui->DCDC1OUT_V->setFormat(QString("DCDC输出电压 : %1 V").arg(QString::number(DC1_putV)));
        ui->DCDC1OUT_A->setFormat(QString("DCDC输出电流 : %1 A").arg(QString::number(DC1_putA)));
        ui->ZLQ1IN_V->setFormat(QString("整流桥输入电压 : %1 V").arg(QString::number(ZLQ1_inV)));
        ui->ZLQ1IN_A->setFormat(QString("整流桥输入电流 : %1 A").arg(QString::number(ZLQ1_inA)));
    }
}

void MainWindow::View_init()
{
    ui->lightKey->setGray();
    ui->lightBug->setGray();

    createIndicatorLabel(ui->label,7,70,"WiFi",1);
    createIndicatorLabel(ui->label_2,7,70,"CAN",1);
    createIndicatorLabel(ui->label_3,7,70,"485",1);
    createIndicatorLabel(ui->tem1_1,7,30,"",1);
    createIndicatorLabel(ui->tem1_2,7,30,"",1);
    createIndicatorLabel(ui->tem1_3,7,30,"",1);
    createIndicatorLabel(ui->tem1_4,7,30,"",1);
    createIndicatorLabel(ui->tem1_5,7,30,"",1);
    createIndicatorLabel(ui->tem1_6,7,30,"",1);
    createIndicatorLabel(ui->DW,7,30,"",1);
    createIndicatorLabel(ui->DW_2,7,30,"",1);
    createIndicatorLabel(ui->DW_3,7,30,"",1);
    createIndicatorLabel(ui->DW_4,7,30,"",1);

    ui->pro1Tem1->setTitle("上桥温度");
    ui->pro1Tem2->setTitle("下桥温度");
    ui->pro1Tem3->setTitle("电感温度");
    ui->pro1Tem1->setRange(0,150);
    ui->pro1Tem2->setRange(0,150);
    ui->pro1Tem3->setRange(0,150);
    ui->pro1Tem1->setPercent(false);
    ui->pro1Tem2->setPercent(false);
    ui->pro1Tem3->setPercent(false);

    ui->Edit_model->setStyleSheet("font: 30 14pt '微软雅黑 Light';" //字体
                            "color: rgb(31,31,31);"		//字体颜色
                            "padding-left:1px;"       //内边距-字体缩进
                            "background-color: rgb(255, 255, 255);" //背景颜色
                            "border:3px solid rgb(128,138,135);border-radius:3px;");//边框粗细-颜色-圆角设置
    ui->Edit_ZKB->setStyleSheet("font: 30 14pt '微软雅黑 Light';" //字体
                            "color: rgb(31,31,31);"		//字体颜色
                            "padding-left:1px;"       //内边距-字体缩进
                            "background-color: rgb(255, 255, 255);" //背景颜色
                            "border:3px solid rgb(128,138,135);border-radius:3px;");//边框粗细-颜色-圆角设置
    ui->Edit1_DDXQ->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
                               "color: rgb(31,31,31);"		//字体颜色
                               "padding-left:1px;"       //内边距-字体缩进
                               "background-color: rgb(255, 255, 255);" //背景颜色
                               "border:3px solid rgb(20,196,188);border-radius:5px;");//边框粗细-颜色-圆角设置
    ui->Edit1_DDCX->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
                               "color: rgb(31,31,31);"		//字体颜色
                               "padding-left:1px;"       //内边距-字体缩进
                               "background-color: rgb(255, 255, 255);" //背景颜色
                               "border:3px solid rgb(20,196,188);border-radius:5px;");
    ui->Edit1_QCX->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
                               "color: rgb(31,31,31);"		//字体颜色
                               "padding-left:1px;"       //内边距-字体缩进
                               "background-color: rgb(255, 255, 255);" //背景颜色
                               "border:3px solid rgb(20,196,188);border-radius:5px;");
    ui->Edit1_QXQ->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
                               "color: rgb(31,31,31);"		//字体颜色
                               "padding-left:1px;"       //内边距-字体缩进
                               "background-color: rgb(255, 255, 255);" //背景颜色
                               "border:3px solid rgb(20,196,188);border-radius:5px;");
    ui->Edit1_DR->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
                               "color: rgb(31,31,31);"		//字体颜色
                               "padding-left:1px;"       //内边距-字体缩进
                               "background-color: rgb(255, 255, 255);" //背景颜色
                               "border:3px solid rgb(20,196,188);border-radius:5px;");
    ui->Edit1_ZLQ->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
                               "color: rgb(31,31,31);"		//字体颜色
                               "padding-left:1px;"       //内边距-字体缩进
                               "background-color: rgb(255, 255, 255);" //背景颜色
                               "border:3px solid rgb(20,196,188);border-radius:5px;");
    ui->Edit_ZKB->setReadOnly(true);
    ui->Edit_ZKB->setFocusPolicy(Qt::ClickFocus);
    ui->Edit_model->setReadOnly(true);
    ui->Edit_model->setFocusPolicy(Qt::ClickFocus);
    ui->Edit1_DDXQ->setReadOnly(true);
    ui->Edit1_DDXQ->setFocusPolicy(Qt::ClickFocus);
    ui->Edit1_DDCX->setReadOnly(true);
    ui->Edit1_DDCX->setFocusPolicy(Qt::ClickFocus);
    ui->Edit1_QCX->setReadOnly(true);
    ui->Edit1_QCX->setFocusPolicy(Qt::ClickFocus);
    ui->Edit1_QXQ->setReadOnly(true);
    ui->Edit1_QXQ->setFocusPolicy(Qt::ClickFocus);
    ui->Edit1_DR->setReadOnly(true);
    ui->Edit1_DR->setFocusPolicy(Qt::ClickFocus);
    ui->Edit1_ZLQ->setReadOnly(true);
    ui->Edit1_ZLQ->setFocusPolicy(Qt::ClickFocus);
}

void MainWindow::progressInit()
{
    QString s2= "QProgressBar{"
                     "text-align: center;"
                     "border: 1px solid rgb(152, 152, 152);"
                     "background: rgba(248,248,255,180);"
                     "border-radius: 6px; }"
                     "QProgressBar::chunk:enabled {"
                     "border-radius: 4px; "
                     "background: qlineargradient(x1:0, y1:0, x2:1, y2:0 ,stop:0 #009900, stop:1 #009900);}" ;
    QString s1= "QProgressBar{"
                   "text-align: center;"
                   "border: 1px solid rgb(152, 152, 152);"
                   "background: rgba(248,248,255,180);"
                   "border-radius: 6px; }"
                   "QProgressBar::chunk:enabled {"
                   "border-radius: 4px; "
                   "background: qlineargradient(x1:0, y1:0, x2:1, y2:0 ,stop:0 #05B8CC, stop:1 #05B8CC,);}" ;
    QString s3= "QProgressBar{"
                     "text-align: center;"
                     "border: 1px solid rgb(152, 152, 152);"
                     "background: rgba(248,248,255,180);"
                     "border-radius: 6px; }"
                     "QProgressBar::chunk:enabled {"
                     "border-radius: 4px; "
                     "background: qlineargradient(x1:0, y1:0, x2:1, y2:0 ,stop:0 #9ACBF9, stop:1 #3C64D9);}" ;
    ui->DCDC1IN_V->setOrientation(Qt::Horizontal);// 水平方向
    ui->DCDC1IN_V->setMinimum(0); // 最小值
    ui->DCDC1IN_V->setMaximum(2000); // 最大值
    ui->DCDC1IN_V->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);  // 对齐方式
    ui->DCDC1IN_V->setFormat(QString("DCDC输入电流 : %1 V").arg(QString::number(DC1_inV)));
    ui->DCDC1IN_V->setFixedHeight(27);//固定高度
    ui->DCDC1IN_V->setStyleSheet(s1);
    ui->DCDC1IN_A->setOrientation(Qt::Horizontal);// 水平方向
    ui->DCDC1IN_A->setMinimum(0); // 最小值
    ui->DCDC1IN_A->setMaximum(200); // 最大值
    ui->DCDC1IN_A->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);  // 对齐方式
    ui->DCDC1IN_A->setFormat(QString("DCDC输入电流 : %1 A").arg(QString::number(DC1_inA)));
    ui->DCDC1IN_A->setFixedHeight(27);//固定高度
    ui->DCDC1IN_A->setStyleSheet(s1);
    ui->DCDC1OUT_V->setOrientation(Qt::Horizontal);// 水平方向
    ui->DCDC1OUT_V->setMinimum(0); // 最小值
    ui->DCDC1OUT_V->setMaximum(1500); // 最大值
    ui->DCDC1OUT_V->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);  // 对齐方式
    ui->DCDC1OUT_V->setFormat(QString("DCDC输出电压 : %1 V").arg(QString::number(DC1_putV)));
    ui->DCDC1OUT_V->setFixedHeight(27);//固定高度
    ui->DCDC1OUT_V->setStyleSheet(s2);
    ui->DCDC1OUT_A->setOrientation(Qt::Horizontal);// 水平方向
    ui->DCDC1OUT_A->setMinimum(0); // 最小值
    ui->DCDC1OUT_A->setMaximum(300); // 最大值
    ui->DCDC1OUT_A->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);  // 对齐方式
    ui->DCDC1OUT_A->setFormat(QString("DCDC输出电流 : %1 A").arg(QString::number(DC1_putA)));
    ui->DCDC1OUT_A->setFixedHeight(27);//固定高度
    ui->DCDC1OUT_A->setStyleSheet(s2);
    ui->ZLQ1IN_V->setMinimum(0); // 最小值
    ui->ZLQ1IN_V->setMaximum(500); // 最大值
    ui->ZLQ1IN_V->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);  // 对齐方式
    ui->ZLQ1IN_V->setFormat(QString("整流桥输入电压 : %1 V").arg(QString::number(ZLQ1_inV)));
    ui->ZLQ1IN_V->setFixedHeight(27);//固定高度
    ui->ZLQ1IN_V->setStyleSheet(s3);
    ui->ZLQ1IN_A->setMinimum(0); // 最小值
    ui->ZLQ1IN_A->setMaximum(500); // 最大值
    ui->ZLQ1IN_A->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);  // 对齐方式
    ui->ZLQ1IN_A->setFormat(QString("整流桥输入电流 : %1 A").arg(QString::number(ZLQ1_inA)));
    ui->ZLQ1IN_A->setFixedHeight(27);//固定高度
    ui->ZLQ1IN_A->setStyleSheet(s3);
}

/*封装label，设置label大小，颜色，内部字体，颜色，内容，并根据需要是否显示内部字体，使其成为一个指示灯*/
void MainWindow::createIndicatorLabel(QLabel *label, int color, int size, QString number, bool numlock)
{
    /*label->传入的label，color->颜色标识，size->指示灯大小，
      number->需要显示的数字，numlock->是否需要显示数字*/
    label->setFixedSize(size,size);//设置固定大小，为圆形label准备
    label->setText("");//清除文本
    label->setStyleSheet("");//清除样式表
    QString htmlText, styleSheet, labelcolor;
    /*
        根据传入的color标识，确定为指示灯显示何种颜色
        1--黑色，2--蓝色，3--绿色，4--紫色，5--红色，6-黄色
        */
    if(color == 1)
    {
        labelcolor = QColor(Qt::black).name();//1--黑色
    }
    else if(color == 2)
    {
        labelcolor = QColor(Qt::blue).name();//2--蓝色
    }
    else if(color == 3)
    {
        labelcolor = QColor(Qt::green).name();//3--绿色
    }
    else if(color == 4)
    {
        labelcolor = QColor(0,201,0).name();//4--字体绿色
    }
    else if(color == 5)
    {
        labelcolor = QColor(Qt::red).name();//5--红色
    }
    else if(color == 6)
    {
        labelcolor = QColor(255,97,0).name();//橙色
    }
    else if(color == 7)
    {
        labelcolor = QColor(Qt::gray).name();//灰色
    }
    /*根据numlock确认是否需要显示内部数字*/
    if(numlock)
    {
        /*样式表设置label格式，背景颜色labelcolor;边框半径size/2;字体颜色：黄色，居中显示;2px宽度黄色实线边框*/
        styleSheet = QString("background-color: %1; border-radius: %2; color: %3; text-align: center; border: 0px solid gray; padding: 12px;")
                .arg(labelcolor)
                .arg(size/2)
                .arg(QColor(Qt::black).name());
        /*HTML格式设置字体，字体样式"Times New Roman";字体大小18;显示的内容number*/
        htmlText = QString("<html><body><div style = \"font-family: %1; font-size: %2px; \">%3</div></body></html>")
                .arg("Times New Roman")
                .arg(20)
                .arg(number);
    }
    else
    {
        styleSheet = QString("background-color: %1; border-radius: %2; color: %3; text-align: center; border: 1px solid yellow; padding: 2px;")
                .arg(labelcolor)
                .arg(size/2)
                .arg(QColor(Qt::yellow).name());
    }
    label->setStyleSheet(styleSheet);//设置样式表
    label->setText(htmlText);//设置文本

}

void MainWindow::CANConnect()
{
    //createIndicatorLabel(ui->label_4,3,70,"CAN",1);
}

void MainWindow::RS485Data(QString da)
{
    //qDebug()<<da;
    QString da1 = da.mid(10,4);//DD线圈温度数据
    QString da2 = da.mid(18,4);//Q线圈温度数据
    QString da3 = da.mid(26,4);//DD磁芯温度数据

    int num1 = da1.toInt(0,16);//16进制转10进制
    int num2 = da2.toInt(0,16);
    int num3 = da3.toInt(0,16);

    Tem1_1 = num1/10.0;//DD线圈温
    Tem1_2 = num2/10.0;//Q线圈温度
    Tem1_3 = num3/10.0;//DD磁芯温

    ui->Edit1_DDXQ->setText(QString::number(Tem1_1,'f', 1)+"℃");
    ui->Edit1_QCX->setText(QString::number(Tem1_2,'f', 1)+"℃");
    ui->Edit1_DDCX->setText(QString::number(Tem1_3,'f', 1)+"℃");

//    if(Tem1_1<80){
//        ui->Edit1_DDXQ->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(0,201,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_DDXQ->setText(QString::number(Tem1_1,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_1,4,30,"",1);
//        bug1_1 = "00";
//    }else if(Tem1_1>=80&&Tem1_1<100){
//        ui->Edit1_DDXQ->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(255,97,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_DDXQ->setText(QString::number(Tem1_1,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_1,6,30,"",1);
//        bug1_1 = "01";
//        emit SIGWarnTem1();
//    }else if(Tem1_1>=100){
//        ui->Edit1_DDXQ->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(255,0,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_DDXQ->setText(QString::number(Tem1_1,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_1,5,30,"",1);
//        bug1_1 = "11";
//        emit SIGBUGTem1();
//    }

//    if(Tem1_2<80){
//        ui->Edit1_QCX->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(0,201,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_QCX->setText(QString::number(Tem1_2,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_2,4,30,"",1);
//        bug1_2 = "00";
//    }else if(Tem1_2>=80&&Tem1_2<100){
//        ui->Edit1_QCX->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(255,97,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_QCX->setText(QString::number(Tem1_2,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_2,6,30,"",1);
//        bug1_2 = "01";
//        emit SIGWarnTem1();
//    }else if(Tem1_2>=100){
//        ui->Edit1_QCX->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(255,0,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_QCX->setText(QString::number(Tem1_2,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_2,5,30,"",1);
//        bug1_2 = "11";
//        emit SIGBUGTem1();
//    }

//    if(Tem1_3<75){
//        ui->Edit1_DDCX->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(0,201,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_DDCX->setText(QString::number(Tem1_3,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_3,4,30,"",1);
//        bug1_3 = "00";
//    }else if(Tem1_3>=75&&Tem1_3<90){
//        ui->Edit1_DDCX->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(255,97,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_DDCX->setText(QString::number(Tem1_3,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_3,6,30,"",1);
//        bug1_3 = "01";
//        emit SIGWarnTem1();
//    }else if(Tem1_3>=100){
//        ui->Edit1_DDCX->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(255,0,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_DDCX->setText(QString::number(Tem1_3,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_3,5,30,"",1);
//        bug1_3 = "11";
//        emit SIGBUGTem1();
//    }

//    if(Tem1_4<75){
//        ui->Edit1_QCX->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(0,201,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_QCX->setText(QString::number(Tem1_4,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_4,4,30,"",1);
//        bug1_4 = "00";
//    }else if(Tem1_4>=75&&Tem1_4<90){
//        ui->Edit1_DDCX->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(255,97,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_QCX->setText(QString::number(Tem1_4,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_4,6,30,"",1);
//        bug1_4 = "01";
//        emit SIGWarnTem1();
//    }else if(Tem1_4>=100){
//        ui->Edit1_QCX->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(255,0,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_QCX->setText(QString::number(Tem1_4,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_4,5,30,"",1);
//        bug1_4 = "11";
//        emit SIGBUGTem1();
//    }

//    if(Tem1_5<55){
//        ui->Edit1_DR->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(0,201,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_DR->setText(QString::number(Tem1_5,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_5,4,30,"",1);
//        bug1_5 = "00";
//    }else if(Tem1_5>=55&&Tem1_5<60){
//        ui->Edit1_DR->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(255,97,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_DR->setText(QString::number(Tem1_5,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_5,6,30,"",1);
//        bug1_5 = "01";
//        emit SIGWarnTem1();
//    }else if(Tem1_5>=60){
//        ui->Edit1_DR->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(255,0,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_DR->setText(QString::number(Tem1_5,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_5,5,30,"",1);
//        bug1_5 = "11";
//        emit SIGBUGTem1();
//    }

//    if(Tem1_6<75){
//        ui->Edit1_ZLQ->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(0,201,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_ZLQ->setText(QString::number(Tem1_6,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_6,4,30,"",1);
//        bug1_6 = "00";
//    }else if(Tem1_6>=75&&Tem1_6<90){
//        ui->Edit1_ZLQ->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(255,97,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_ZLQ->setText(QString::number(Tem1_6,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_6,6,30,"",1);
//        bug1_6 = "01";
//        emit SIGWarnTem2();
//        emit SIG_bug1(bug1_6);
//    }else if(Tem1_6>=100){
//        ui->Edit1_ZLQ->setStyleSheet("font: 25 13pt '微软雅黑 Light';" //字体
//                                   "color: rgb(255,0,0);"		//字体颜色
//                                   "padding-left:20px;"       //内边距-字体缩进
//                                   "background-color: rgb(255, 255, 255);" //背景颜色
//                                   "border:3px solid rgb(20,196,188);border-radius:5px;");
//        ui->Edit1_ZLQ->setText(QString::number(Tem1_6,'f', 1)+"℃");
//        createIndicatorLabel(ui->tem1_6,5,30,"",1);
//        bug1_6 = "11";
//        emit SIGBUGTem2();
//        emit SIG_bug1(bug1_6);
//    }
    //    emit SIG_bug1(bug1_1+bug1_2+bug1_3+bug1_4+bug1_5+bug1_6);
}

void MainWindow::RS485BGFData(QString da)
{
    emit SIG_dwdata(da);

    QString byte1 = da.mid(0,2);
    QString byte2 = da.mid(2,2);
    QString byte3 = da.mid(4,2);
    QString byte4 = da.mid(6,2);
    QString byte5 = da.mid(8,2);
    QString byte6 = da.mid(10,2);
    QString byte7 = da.mid(12,2);
    QString byte8 = da.mid(14,2);

    //位置信息
    int X = byte5.toInt(0,16)+byte4.toInt(0,16)*128+byte3.toInt(0,16)*16384+byte2.toInt(0,16)*2097152;
    int speed = byte6.toInt(0,16);
    int Y = byte8.toInt(0,16);

    ui->Edit_X->setText(QString::number(X));
    ui->Edit_Y->setText(QString::number(Y));
    ui->Edit_Speed->setText(QString::number(speed));

    //状态信息
    QString byte = QString("%1").arg(byte1.toInt(0,16), 8, 2, QLatin1Char('0'));//状态2
    QString byte1_0 = byte.mid(0,1);//错误标志位
    QString byte1_1 = byte.mid(1,1);//无位置标志位
    QString byte1_2 = byte.mid(2,1);//报警标志位
    QString byte1_3 = byte.mid(3,1);//事件标志位
    if(byte1_0 == "0")
    {
        createIndicatorLabel(ui->DW_4,3,30,"",1);
    }
    else if(byte1_0 == "1")
    {
        createIndicatorLabel(ui->DW_4,5,30,"",1);
    }
    if(byte1_1 == "0")
    {
        createIndicatorLabel(ui->DW_3,3,30,"",1);
    }
    else if(byte1_1 == "1")
    {
        createIndicatorLabel(ui->DW_3,5,30,"",1);
    }
    if(byte1_2 == "0")
    {
        createIndicatorLabel(ui->DW_2,3,30,"",1);
    }
    else if(byte1_2 == "1")
    {
        createIndicatorLabel(ui->DW_2,5,30,"",1);
    }
    if(byte1_3 == "0")
    {
        createIndicatorLabel(ui->DW,3,30,"",1);
    }
    else if(byte1_3 == "1")
    {
        createIndicatorLabel(ui->DW,5,30,"",1);
    }


    //导轨1开关动作
    if(X >= dg1_min && X <= dg1_max)
    {
        qDebug()<<"导轨1打开";
    }
    //导轨2开关动作
    if(X >= dg2_min && X <= dg2_max)
    {
        qDebug()<<"导轨2打开";
    }
    //导轨3开关动作
    if(X >= dg3_min && X <= dg3_max)
    {
        qDebug()<<"导轨3打开";
    }
    //导轨4开关动作
    if(X >= dg4_min && X <= dg4_max)
    {
        qDebug()<<"导轨4打开";
    }
    //导轨5开关动作
    if(X >= dg5_min && X <= dg5_max)
    {
        qDebug()<<"导轨5打开";
    }
    //导轨6开关动作
    if(X >= dg6_min && X <= dg6_max)
    {
        qDebug()<<"导轨6打开";
    }
}

void MainWindow::DCDC1Sstate1(QString da)
{
    QString da1 = da.mid(0,4);//DCDC输入电压
    QString da2 = da.mid(4,2);//DCDC输入电流
    QString da3 = da.mid(6,4);//DCDC输出电压
    QString da4 = da.mid(10,2);//DCDC输出电流
    QString da5 = da.mid(12,4);//整流桥输入电压

    DC1_inV = da1.toInt(0,16);//16进制转10进制
    DC1_inA = da2.toInt(0,16);
    DC1_putV = da3.toInt(0,16);
    DC1_putA = da4.toInt(0,16);
    ZLQ1_inV = da5.toInt(0,16);
}

void MainWindow::DCDC1Sstate2(QString da)
{
    QString da1 = da.mid(0,2);//整流桥输入电流
    QString da2 = da.mid(2,2);//上桥温度
    QString da3 = da.mid(4,2);//下桥温度
    QString da4 = da.mid(6,2);//电感温度
    QString da5 = QString("%1").arg(da.mid(8,2).toInt(0,16), 8, 2, QLatin1Char('0'));//DCDC故障
    QString byte1 = da5.mid(7,1);//输入过压
    QString byte2 = da5.mid(6,1);//输出过压
    QString byte3 = da5.mid(5,1);//输入过流
    QString byte4 = da5.mid(4,1);//上管过温
    QString byte5 = da5.mid(3,1);//下管过温
    QString byte6 = da5.mid(2,1);//电感过温
    QString da6 = da.mid(10,2);//当前占空比
    QString da7 = da.mid(12,2);

    ZLQ1_inA = da1.toInt(0,16);
    SQ1Tem = da2.toInt(0,16);
    XQ1Tem = da3.toInt(0,16);
    DG1Tem = da4.toInt(0,16);
    ui->pro1Tem1->setValue(SQ1Tem);
    ui->pro1Tem2->setValue(XQ1Tem);
    ui->pro1Tem3->setValue(DG1Tem);
    int ZKB = da6.toInt(0,16);
    ui->Edit_ZKB->setText(QString::number(ZKB));

    //qDebug()<<da6.toInt(0,16);
    if(da7.toInt(0,16) == 0){
        ui->Edit_model->setText("恒压");
        ui->lightKey->setGreen();
    }else if(da7.toInt(0,16) == 1){
        ui->lightKey->setGreen();
        ui->Edit_model->setText("恒流");
    }else if(da7.toInt(0,16) == 2){
        ui->Edit_model->setText("恒功率");
        ui->lightKey->setGreen();
    }else if(da7.toInt(0,16) == 3){
        ui->Edit_model->setText("恒占空比");
        ui->lightKey->setGreen();
    }else if(da7.toInt(0,16) == 4){
        //ui->Edit_model->setText("恒占空比");
    }else if(da7.toInt(0,16) == 5){
        ui->lightKey->setRed();
    }

    if(da5 == "00"){
        ui->lightBug->setGreen();
    }else if(da5 != "00"){
        ui->lightBug->setRed();
    }
    if(byte1 == "0"){
        ui->bug1_SRGY->setStyleSheet("background-color: rgb(0, 255, 0);");
    }else if(byte1 == "1"){
        ui->bug1_SRGY->setStyleSheet("background-color: rgb(255, 0, 0);");
        //emit SIGBUGFlag();
    }
    if(byte2 == "0"){
        ui->bug1_SCGY->setStyleSheet("background-color: rgb(0, 255, 0);");
    }else if(byte2 == "1"){
        ui->bug1_SCGY->setStyleSheet("background-color: rgb(255, 0, 0);");
    }
    if(byte3 == "0"){
        ui->bug1_SCGL->setStyleSheet("background-color: rgb(0, 255, 0);");
    }else if(byte3 == "1"){
        ui->bug1_SCGL->setStyleSheet("background-color: rgb(255, 0, 0);");
    }
    if(byte4 == "0"){
        ui->bug1_SGGW->setStyleSheet("background-color: rgb(0, 255, 0);");
    }else if(byte4 == "1"){
        ui->bug1_SGGW->setStyleSheet("background-color: rgb(255, 0, 0);");
    }
    if(byte5 == "0"){
        ui->bug1_XGGW->setStyleSheet("background-color: rgb(0, 255, 0);");
    }else if(byte5 == "1"){
        ui->bug1_XGGW->setStyleSheet("background-color: rgb(255, 0, 0);");
    }
    if(byte6 == "0"){
        ui->bug1_DGGW->setStyleSheet("background-color: rgb(0, 255, 0);");
    }else if(byte6 == "1"){
        ui->bug1_DGGW->setStyleSheet("background-color: rgb(255, 0, 0);");
    }
}

void MainWindow::on_openRS4851_clicked()
{
    SerialPort.setPortName("COM8");//选择串口号
    if( !SerialPort.open(QIODevice::ReadWrite))//打开串口
    {
        QMessageBox::information(this, tr("提示"),
                                 tr("打开串口失败,请查看串口是否被占用"), QMessageBox::Ok);
        return;
    }
    createIndicatorLabel(ui->label_3,3,70,"485",1);
    //ui->openRS485->setText(tr("关闭串口"));//改变按钮上的文字
    SerialPort.setBaudRate(115200);//读取波特率BaudRate下拉框的选择
    SerialPort.setDataBits(QSerialPort::Data8);//8位数据位
    SerialPort.setParity(QSerialPort::EvenParity);//无检验
    SerialPort.setStopBits(QSerialPort::OneStop);//1位停止位
    SerialPort.setFlowControl(QSerialPort::NoFlowControl);//无硬件控制  无流控制
    //ui->serialCbb->setDisabled(true);//串口号下拉列表变灰
    //ui->boCbb->setDisabled(true);//波特率下接列表变灰
    on_findBtn_clicked();
}

void MainWindow::on_openRS4852_clicked()
{
    SerialPort2.setPortName("COM9");//选择串口号
    if( !SerialPort2.open(QIODevice::ReadWrite))//打开串口
    {
        QMessageBox::information(this, tr("提示"),
                                 tr("打开串口失败,请查看串口是否被占用"), QMessageBox::Ok);
        return;
    }
    createIndicatorLabel(ui->label_3,3,70,"485",1);
    //ui->openRS485->setText(tr("关闭串口"));//改变按钮上的文字
    SerialPort2.setBaudRate(9600);//读取波特率BaudRate下拉框的选择
    SerialPort2.setDataBits(QSerialPort::Data8);//8位数据位
    SerialPort2.setParity(QSerialPort::NoParity);//无检验
    SerialPort2.setStopBits(QSerialPort::OneStop);//1位停止位
    SerialPort2.setFlowControl(QSerialPort::NoFlowControl);//无硬件控制  无流控制
    //ui->serialCbb->setDisabled(true);//串口号下拉列表变灰
    //ui->boCbb->setDisabled(true);//波特率下接列表变灰
    on_findBtn2_clicked();
}

void MainWindow::on_findBtn_clicked()
{
    //QString name = ui->findBtn->text();//获取按钮上的文字
    if(!SerialPort.isOpen())
    {
        QMessageBox::critical(this, tr("错误"),
            tr("请先打开串口"), QMessageBox::Ok);
         m_timer.stop();
         tem_timer.stop();
        return;
    }
    if(m_timer.isActive()){
         m_timer.stop();
         tem_timer.stop();
         //ui->findBtn->setText(tr("获取数据"));//改变按钮上的文字
    }else {
         m_timer.start(25);//500毫秒发送一次指令
         tem_timer.start(50);//1秒获取一次数值
         //ui->findBtn->setText(tr("关闭数据"));//改变按钮上的文字
    }
}

void MainWindow::on_findBtn2_clicked()
{
    if(!SerialPort2.isOpen())
    {
        QMessageBox::critical(this, tr("错误"),
            tr("请先打开串口"), QMessageBox::Ok);
         m_timer2.stop();
         tem_timer2.stop();
        return;
    }
    if(m_timer2.isActive()){
         m_timer2.stop();
         tem_timer2.stop();
         //ui->findBtn->setText(tr("获取数据"));//改变按钮上的文字
    }else {
         m_timer2.start(100);//500毫秒发送一次指令
         tem_timer2.start(500);//1秒获取一次数值
         //ui->findBtn->setText(tr("关闭数据"));//改变按钮上的文字
    }
}

void MainWindow::readTemperature()
{
    QString volcur = "01 03 00 00 00 19 84 00";//温度查询指令
    //CRC校验 省  字符串转数组
    QByteArray ba = volcur.toLatin1(); //转换成字节数组类型
    //SerialPort.write(ba);
    if(volcur.length()!=0)
    {
        ba=ba.replace("0x","");//将字符串中的0x字符替换成空字符
        ba=ba.replace("0X","");//将字符串中的0X字符替换成空字符
        ba=ba.replace(" ",""); //将字符串中的空格字符替换成空字符

        for(int i =0;i < ( ba.length() - ba.length()%2 )/2;i++) //循环写字节,两个数组成一个字节，循环次数为数据长度的一半，奇数时最后一位先不写
        {
            char ch= ba.mid(i*2,2).toUShort(nullptr,16);//2个数字组成一个字节,转换成十六进制
            SerialPort2.putChar(ch);//发送一个字节
            //qDebug()<<ch;
        }
        if(ba.length()%2 != 0)//数字个数是奇数 单独处理最后一个数
        {
            char ch= ba.right(1).toUShort(nullptr,16);//获取最后一个数
            SerialPort2.putChar(ch);//发送最后一个字节
        }
    }
}

void MainWindow::readXYSpeed()
{
    QString volcur = "A0 5F";//X、Y轴+速度数据请求报文
    //CRC校验 省  字符串转数组
    QByteArray ba = volcur.toLatin1(); //转换成字节数组类型
//    SerialPort.write(ba);
    if(volcur.length()!=0)
    {
        ba=ba.replace("0x","");//将字符串中的0x字符替换成空字符
        ba=ba.replace("0X","");//将字符串中的0X字符替换成空字符
        ba=ba.replace(" ",""); //将字符串中的空格字符替换成空字符

        for(int i =0;i < ( ba.length() - ba.length()%2 )/2;i++) //循环写字节,两个数组成一个字节，循环次数为数据长度的一半，奇数时最后一位先不写
        {
            char ch= ba.mid(i*2,2).toUShort(nullptr,16);//2个数字组成一个字节,转换成十六进制
            SerialPort.putChar(ch);//发送一个字节
            //qDebug()<<ch;
        }
        if(ba.length()%2 != 0)//数字个数是奇数 单独处理最后一个数
        {
            char ch= ba.right(1).toUShort(nullptr,16);//获取最后一个数
            SerialPort.putChar(ch);//发送最后一个字节
        }
    }
    //qDebug()<<volcur;
}

void MainWindow::readBug()
{
    QString volcur = "C0 3F";//状态信息请求
    //CRC校验 省  字符串转数组
    QByteArray ba = volcur.toLatin1(); //转换成字节数组类型
//    SerialPort.write(ba);
    if(volcur.length()!=0)
    {
        ba=ba.replace("0x","");//将字符串中的0x字符替换成空字符
        ba=ba.replace("0X","");//将字符串中的0X字符替换成空字符
        ba=ba.replace(" ",""); //将字符串中的空格字符替换成空字符

        for(int i =0;i < ( ba.length() - ba.length()%2 )/2;i++) //循环写字节,两个数组成一个字节，循环次数为数据长度的一半，奇数时最后一位先不写
        {
            char ch= ba.mid(i*2,2).toUShort(nullptr,16);//2个数字组成一个字节,转换成十六进制
            SerialPort.putChar(ch);//发送一个字节
            //qDebug()<<ch;
        }
        if(ba.length()%2 != 0)//数字个数是奇数 单独处理最后一个数
        {
            char ch= ba.right(1).toUShort(nullptr,16);//获取最后一个数
            SerialPort.putChar(ch);//发送最后一个字节
        }
    }
}

void MainWindow::on_pushButton_clicked()
{
    int ID = 0x18D10001;
    s2 = "1";
    QString da;
    QString str1;
    if(ui->comboBox->currentIndex() == 0)//恒压
    {
        s1 = "00";
        da = s0+s1+s2;
        str1 = QString("%1").arg(da.toInt(0,2),2,16,QLatin1Char('0'));
        int numV = ui->Edit_setV->text().toInt();
        daV = QString("%1").arg(numV,4,16,QLatin1Char('0'));
        daA = "00";
        daW = "00";
        daZK = "00";
    }
    if(ui->comboBox->currentIndex() == 1)//恒流
    {
        s1 = "01";
        da = s0+s1+s2;
        str1 = QString("%1").arg(da.toInt(0,2),2,16,QLatin1Char('0'));
        int numA = ui->Edit_setA->text().toInt();
        daA = QString("%1").arg(numA,2,16,QLatin1Char('0'));
        daV = "0000";
        daW = "00";
        daZK = "00";
    }
    if(ui->comboBox->currentIndex() == 2)//恒功率
    {
        s1 = "10";
        da = s0+s1+s2;
        str1 = QString("%1").arg(da.toInt(0,2),2,16,QLatin1Char('0'));
        int numW = ui->Edit_setW->text().toInt();
        daW = QString("%1").arg(numW,2,16,QLatin1Char('0'));
        daV = "0000";
        daA = "00";
        daZK = "00";
    }
    if(ui->comboBox->currentIndex() == 3)//恒占空比
    {
        s1 = "11";
        da = s0+s1+s2;
        str1 = QString("%1").arg(da.toInt(0,2),2,16,QLatin1Char('0'));
        int numZK = ui->Edit_setZKB->text().toInt();
        daZK = QString("%1").arg(numZK,2,16,QLatin1Char('0'));
        daV = "0000";
        daW = "00";
        daA = "00";
    }
    int ZKBlimit = ui->Edit_setZKBlimit->text().toInt();
    QString daZKBlimit = QString("%1").arg(ZKBlimit,2,16,QLatin1Char('0'));
    QString Data = str1+daV+daA+daW+daZK+daZKBlimit+"00";
    std::vector<int> vec;
    QByteArray data1 = Data.toUpper().toLatin1();
    for(int i=0; i<8; i++)
    {
        vec.push_back(Data.mid(2*i,2).toInt(0,16));
        double vec = QRandomGenerator::global()->generateDouble();
    }
    emit SIGtocansen(ID,vec);
}


void MainWindow::on_pushButton_2_clicked()
{
    int ID = 0x18D10001;
    QString Data = "0000000000000000";
    std::vector<int> vec;
    QByteArray data1 = Data.toUpper().toLatin1();
    for(int i=0; i<8; i++)
    {
        vec.push_back(Data.mid(2*i,2).toInt(0,16));
        double vec = QRandomGenerator::global()->generateDouble();
    }
    emit SIGtocansen(ID,vec);
}


void MainWindow::on_comboBox_activated(int index)
{
    if(index == 0)
    {
        ui->Edit_setV->setDisabled(false);
        ui->Edit_setA->setDisabled(true);
        ui->Edit_setW->setDisabled(true);
        ui->Edit_setZKB->setDisabled(true);
        ui->Edit_setA->setText("");
        ui->Edit_setW->setText("");
        ui->Edit_setZKB->setText("");
    }
    if(index == 1)
    {
        ui->Edit_setV->setDisabled(true);
        ui->Edit_setA->setDisabled(false);
        ui->Edit_setW->setDisabled(true);
        ui->Edit_setZKB->setDisabled(true);
        ui->Edit_setV->setText("");
        ui->Edit_setW->setText("");
        ui->Edit_setZKB->setText("");
    }
    if(index == 2)
    {
        ui->Edit_setV->setDisabled(true);
        ui->Edit_setA->setDisabled(true);
        ui->Edit_setW->setDisabled(false);
        ui->Edit_setZKB->setDisabled(true);
        ui->Edit_setA->setText("");
        ui->Edit_setV->setText("");
        ui->Edit_setZKB->setText("");
    }
    if(index == 3)
    {
        ui->Edit_setV->setDisabled(true);
        ui->Edit_setA->setDisabled(true);
        ui->Edit_setW->setDisabled(true);
        ui->Edit_setZKB->setDisabled(false);
        ui->Edit_setA->setText("");
        ui->Edit_setW->setText("");
        ui->Edit_setV->setText("");
    }
}

